home *** CD-ROM | disk | FTP | other *** search
/ Amiga News 95 / Amiga News 95.iso / dpat / dpat01 / amimac / amimac.c < prev    next >
C/C++ Source or Header  |  1992-07-21  |  5KB  |  133 lines

  1. /* AmiMac v1.2 -- Michel Laliberté, mars 1990 */
  2. #include <stdio.h>
  3. main(argc,argv)
  4. int argc;
  5. char *argv[];
  6. {
  7.  short conv = 0;
  8.  register char b;
  9.  register char c;
  10.  register short lf=0;
  11.  FILE *fp;
  12.  FILE *pf;
  13.  if(((argc != 4) && (argc != 5)) || (argv[1][0] == '?')) 
  14.  {
  15.  printf("\f");
  16.  printf(" AmiMac v1.0  - mars 1990  INSTRUCTIONS \n\n");
  17.  printf("      Ce programme convertit les accents français des fichiers\n");
  18.  printf("      ASCII Amiga en accents français MacIntosh, et vice-versa.\n");
  19.  printf("      Utiliser File Transfer ou un modem pour convertir le fichier.\n\n");
  20.  printf(" FORMAT D'UTILISATION:\n\n");
  21.  printf("   1> amimac  source  dest  xxx  [lf]  Place dans le fichier dest\n");
  22.  printf("                                       la version convertie du\n");
  23.  printf("                                       fichier source.\n\n");
  24.  printf("    * Si xxx = mac, le sens de la conversion est: Amiga -> Mac\n");
  25.  printf("    * Si xxx = ami, on prend le sens contraire:   Mac -> Amiga\n\n");
  26.  printf("    * lf (facultatif): change les CR (Mac) en LF (Amiga) ou l'inverse.\n");
  27.  printf("    * Pour des résultats plus rapides, travailler en RAM:\n");
  28.  printf("       ex.: 1> amimac   ram:n_du_fichier   ram:conv.1  mac \n");
  29.  printf("            CE PROGRAMME EST GRATUIT - REVENTE INTERDITE\n");
  30.  printf("    Michel Laliberté, Montréal - tél.: (514) 274-0288\n\n");
  31.  exit(0);
  32.  }
  33.   else if (argc >=4 && !strcmp(argv[3],"mac")) conv=1;
  34.   else if (argc >=4 && !strcmp(argv[3],"ami")) conv=2;
  35.   else if (conv==0){
  36.        printf("FORMAT: 1> amimac  source destination xxx [lf] \n");
  37.        printf("         \"xxx\" doit être \"ami\" ou \"mac\".\n\n");
  38.            exit(0);
  39.            }
  40.   if (argc ==5 && !strcmp(argv[4],"lf")) lf = 1;
  41.   if((fp=fopen(argv[1],"r")) == NULL) {
  42.         printf("          Impossible d'ouvrir le fichier source...\n");
  43.         exit(0);
  44.       }
  45.   if((pf=fopen(argv[2],"w")) == NULL) {
  46.         printf("          Impossible d'ouvrir le fichier destination...\n");
  47.         exit(0);
  48.       }
  49.   if (conv==1) /* Ami -> Mac */
  50.       {
  51.             b=getc(fp); 
  52.             while (b!=EOF) {      /* boucle de lecture-ecriture */
  53.             if (lf && (b == 10)) b = 13;   /* convertit LF en CR */
  54.                if (b>='à' || b=='É') switch(b) {
  55.                   case 'à': 
  56.                      b=136;break;
  57.                   case 'â':
  58.                      b=137;break;
  59.                   case 'é':
  60.                      b=142;break;
  61.                   case 'ê':
  62.                      b=144;break;
  63.                   case 'è':
  64.                      b=143;break;
  65.                   case 'ë':
  66.                      b=145;break;
  67.                   case 'ï':
  68.                      b=149;break;
  69.                   case 'î':
  70.                      b=148;break;
  71.                   case 'ô':
  72.                      b=153;break;
  73.                   case 'ù':
  74.                      b=157;break;
  75.                   case 'û':
  76.                      b=158;break;
  77.                   case 'ü':
  78.                      b=159;break;
  79.                   case 'ç':
  80.                      b=141;break;
  81.                   case 'É':
  82.                      b=131;    
  83.                  }
  84.                putc(b,pf); /* Ecrit un caractère */
  85.                b=getc(fp); /* Va en chercher un autre */
  86.           }
  87.       fclose(fp);
  88.       fclose(pf);
  89.       }
  90.    if (conv==2) /* Mac -> Ami */
  91.       {
  92.         b=getc(fp);        
  93.         while (b!=EOF) {
  94.         if (lf && (b == 13)) b = 10;   /* convertit CR en LF */
  95.             c=(b-64);       /* décalage de -64 pour les caract. invisibles*/
  96.                if (c >= 'C' || c <= '_') switch(c) { 
  97.                   case 'H':
  98.                      b=224;break;
  99.                   case 'I':
  100.                      b=226;break;
  101.                   case 'N':
  102.                      b=233;break;
  103.                   case 'P':
  104.                      b=234;break;
  105.                   case 'O':
  106.                      b=232;break;
  107.                   case 'Q':
  108.                      b=235;break;
  109.                   case 'U':
  110.                      b=239;break;
  111.                   case 'T':
  112.                      b=238;break;
  113.                   case 'Y':
  114.                      b=244;break;
  115.                   case ']':
  116.                      b=249;break;
  117.                   case '^':
  118.                      b=251;break;
  119.                   case '_':
  120.                      b=252;break;
  121.                   case 'M':
  122.                      b=231;break;
  123.                   case 'C':
  124.                      b=201;
  125.                }
  126.          putc(b,pf);   
  127.          b=getc(fp);
  128.          }
  129.        fclose(fp);
  130.        fclose(pf);
  131.        }
  132. }
  133.